草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - 了解 '&' 运算符

据我所知,“&”运算符返回内存中操作数的基址。让我们想象以下场景(如在我的机器上):sizeof(int)=4字节sizeof(float)=4字节sizeof(char)=1字节现在,如果我这样写:voidmain(){inti=5411;int*ip=&i;char*c=&i;printf("%d",*ip);printf("%c",*c);}第一个printf()应该给我5411。说到第二个printf(),i的基地址包含10101001(对于char类型指针,高8位=1个字节)。因此*c应该给我169,当转换为%c时,它是一个无效字符。但是编译器给我“#”或其他一些有效的输出。

c++ - C++ 中 ## 运算符的用途是什么,它叫什么?

我查看了DirectX2009年3月SDK附带的DXUTCore项目,注意到他们没有制作普通的访问器方法,而是使用宏来创建通用访问器,类似于以下内容:#defineGET_ACCESSOR(x,y)inlinexGet##y(){DXUTLockl;returnm_state.m_##y;};...GET_ACCESSOR(WCHAR*,WindowTitle);##运算符似乎只是将第二个参数的文本插入到宏中,以创建一个使用该文本对变量进行操作的函数。这是C++中的标准(即不是Microsoft特定的)吗?它的使用被认为是好的做法吗?而且,那个运算符叫什么?

c++ - 造成这种差异的原因……从 C++ 到 C?

我想知道为什么这种情况一直发生...!!我写了两个程序,一个用c,另一个用c++。两者执行相同的操作。即打印从1到2000000的数字。此外,我在执行开始时设置计时器。在打印所有数字后,还打印了耗时。C++程序的运行时间总是大于C程序。我觉得时间差异很大。我很想知道这是什么原因..????..这是两个程序//iotest.c#include#includeclock_tstart=clock();intmain(){for(inti=0;i//iotest.cpp#include#includeusingnamespacestd;clock_tstart=clock();intmain

c++ - 指向数组的指针

我想知道,你能在一个数组中创建一个指向一组变量的指针吗?像这样array[20]{'a','b','c',...}pointer=array[6through10];那么你可以说...*pointer[0]==array[6];和*pointer[5]==array[10];和*指针的长度5==sizeof(*pointer)\sizeof(type);确定让我解释一下我想要完成的事情,也许这会让我清醒一点。我想将整个文件读入缓冲区,但我想逐个读取。将一个小数组传递给read()然后将其循环到更大的数组中达不到目的。我希望我可以直接“指向”我想要填充的缓冲区中的一个区域,并将其传递给r

c++ - if( var == 'x' ) 这样的语句中的文字存储在哪里?

像这样说charvar;if(var=='x');我们是否首先为“x”分配任何内存?如果是,它是哪个(堆栈/数据)?谢谢! 最佳答案 值“x”可以作为比较指令的一部分直接存储在代码段中,也可以存储在代码段中以立即加载到寄存器中,或存储在数据段中以间接加载或比较。这取决于编译器。 关于c++-if(var=='x')这样的语句中的文字存储在哪里?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

c++ - 为什么我们不能在 C 或 C++ 代码中使用直接寻址?

当我连续多次编译和执行这段代码时,它报告cc的地址为0x0012FF5C。但是当我尝试使用foo中对printf的第二次调用打印出该地址处的字符串时,它打印出垃圾而不是打印出“Hello”?为什么这样??当我知道地址位于应用程序的地址空间内时(至少直到我不重新启动我的PC,或启动其他需要大量空间的应用程序,这会导致我的申请被调出)??voidfoo(char*cc[]){printf("%x\n",cc);printf("%s\n",(char*)(0x0012FF5C));}intmain(){char*c[]={"Hello","World"};foo(c);}

c++ - 变量后加号是什么意思?

以下代码的输出是什么intx,a=3;x=++a+++a+++5;printf("%d%d",x,a);输出是:113.我想知道怎么办?means后面的+符号是什么? 最佳答案 我认为DrYap是对的。x=++a+++a+++5;等同于:x=+(+a)+(+(+a))+(+(+5));这里的重点是:1)c,c++没有+作为后缀运算符,所以我们知道我们必须将它解释为前缀2)monadic+比dyadic+绑定(bind)更紧密(优先级更高)很有趣吧?如果这些是——迹象,它看起来就不会那么奇怪了。Monadic+/-只是一个前导符号,或

c++ - C中的这些声明有什么区别?

在C和C++中,以下声明的作用是什么?constint*i;int*consti;constvolatileintip;constint*i;以上声明是否有误?如果不是,它们之间的含义和区别是什么?上述声明的有用用途是什么(我的意思是在什么情况下我们必须在C/C++/嵌入式C中使用它们)? 最佳答案 constint*i;i是指向常量整数的指针。i可以更改为指向不同的值,但不能更改i指向的值。int*consti;i是指向非常量整数的常量指针。i指向的值可以更改,但不能更改i以指向不同的值。constvolatileintip;这个

c++ - C/C++函数/方法修饰

免责声明:我已经有一段时间没有使用C++了...现在装饰C/C++函数/方法声明以提高可读性是否很常见?粗略示例:voidsome_function(INintparam1,OUTchar**param2);宏IN和OUT定义了一个空主体(如果您愿意的话,在这个例子中就是轻量级文档)。当然,我理解这与与方法/函数关联的“文档注释block”在某种程度上是平行的。您能否提供一些其他示例...假设该主题对社区有用。请记住上面的例子就是这样。 最佳答案 我不会欣赏这样的装饰。使用const和引用以及常量引用要好得多,例如voidsome_

c++ - Unix 是用 C 还是 C++ 或两者编码的?

Unix中的许多系统调用都使用重载和默认变量。C中没有这个概念,所以Unix也是用C++编码的吧? 最佳答案 Unix最早于1969年在贝尔实验室创建,远早于C++的构想。(来源:Unix),您可以通过阅读Lions'CommentaryonUnix来确认这一点,或BSD4.4-Lite(类似于BSDNet/2)在tarball中可用或通过cvs(来自FreeBSD)。或者来自TheUnixHeritageSociety的文件这是来自非常古老的贝尔实验室/AT&T版本。根据HistoryofC++,BjarneStroustrup大